home *** CD-ROM | disk | FTP | other *** search
- 10 REM CHESSBOARD
- 20 REM BY ROBERT J. GONZALEZ
- 21 REM COPYRIGHT (C) 1985,1986,1987
- 25 CR$=CHR$(13)
- 30 POKE55,0:POKE56,56:CLR:POKE 808,239
- 40 BA=15360
- 50 IF PEEK(BA)<>169 THEN LOAD"0:CB.ML/OO",8,1
- 55 GOSUB 3000
- 60 REM INT SECTION
- 70 VT$=""
- 80 REM BR=BORDER COLOR
- 90 REM MB=MAIN BACKGROUND COLOR
- 100 REM LS=LIGHT SQUARE COLOR
- 110 REM DS=DARK SQUARE COLOR
- 120 REM OS=COLOR SQUARE TURNS TO WHEN YOU PICK UP A PIECE
- 130 REM IF OS<0 THEN DON'T CHANGE COLOR
- 140 LS=10:DS=11:OS=-1:MB=12:BR=11
- 150 POKE 53280,BR
- 160 POKE 53281,MB
- 170 POKE 53282,LS
- 180 POKE 53283,DS
- 190 POKE 53284,ABS(OS)
- 200 POKE 2040,239:REM SET SPRITE ZERO TO CROSSHAIR
- 210 SYS BA+407:REM 9623
- 220 REM P1=PLAYER1 COLOR (LIGHT COLOR)
- 230 REM P2=PLAYER2 COLOR (DARK COLOR)
- 240 REM P0=CURRENT PLAYER'S COLOR
- 250 P1=01:P2=00:POKE829,P2:POKE830,P1
- 260 REM PS=BASE SCREEN ADDRESS FOR CAPTURED PIECES
- 270 REM PC=BASE COLOR ADDRESS FOR CAPTURED PIECES
- 280 P0=P2:PS=1027:PC=55299
- 290 POKE53269,1:REM TURN ON SPRITE ZERO
- 300 REM TURN ON EXTENDED BACKGROUND COLOR MODE
- 310 POKE 53265,PEEK(53265)OR 64
- 320 POKE646,PEEK(53281)AND15:PRINT"[147]";
- 330 SYS BA:REM 9216 DRAW BOARD AND PIECES IN ML
- 340 POKE646,P1:PRINTVT$;TAB(09);"# OF JOYSTICKS (1 OR 2)"
- 350 JS=0:POKE 198,0:WAIT 198,1:GET A$:JS=-(A$="1")-2*(A$="2")
- 360 IF JS=0 THEN350
- 370 PRINT"[144]";VT$;TAB(09);" "
- 380 REM IF SHIFT IS DOWN THEN DONT'T CHANGE PLAYERS
- 390 IF PEEK(653)=1 THEN470
- 400 REM IF PIECE HAS BEEN RETURNED TO THE SAME SQUARE THEN DON'T CHANGE PLAYERS
- 410 IF T%=1 THEN T%=0:GOTO470
- 420 IF P0=P2 THEN P0=P1:X=187:Y=190:GOTO440
- 430 IF P0=P1 THEN P0=P2:X=187:Y=93
- 440 POKE 53248,X:POKE53249,Y
- 450 POKE 53287,P0:POKE53264,0
- 460 REM DRAW PAWN ON LEFT CENTER OF SCREEN
- 470 C=1:SL=1464:CL=55736:SK=45:CR=P0:GOSUB1370:POKE 53269,1
- 480 REM READ JOYSTICK
- 490 JV=PEEK(56320-((P0=P1)*-(JS=2)))AND 16:POKE 1019,-128*((P0=P1)*-(JS=2))
- 500 REM TOGGLE BETWEEN PORTS 1 AND 2 DEPENDING ON THE VALUE OF P0
- 510 IF C<>1 THEN580
- 520 IF PEEK(197)=4 THEN F1$="RESET ":GOTO620
- 530 IF PEEK(197)=62 THEN F1$="QUIT ":GOTO620
- 540 IF PEEK(197)=5 THEN420
- 550 IF PEEK(197)=3 THEN GOSUB1430
- 560 IF PEEK(197)=6 THEN GOSUB1520
- 570 REM CHECK FOR FIRE BUTTON
- 575 POKE646,P0:PRINTVT$TAB(14)"CHESSBOARD 3.0";
- 580 IF JV=0 THEN GOSUB710:IF C=3 THEN C=1:GOTO390
- 590 X=256*PEEK(53264)+PEEK(53248)
- 600 Y=PEEK(53249)
- 610 GOTO490
- 620 POKE 646,P0:PRINTVT$;TAB(4)F1$;"ARE YOU SURE? (Y OR N)";
- 630 POKE198,0:WAIT198,1:GETA$
- 640 PRINTVT$;" ";
- 650 ON-(F1$="QUIT ") GOTO680
- 660 ON-(A$="Y")-2*(A$="N") GOTO700,540
- 670 GOTO620
- 680 ON-(A$="N")GOTO540
- 690 SYS 2048
- 700 P0=P2:GOTO320
- 710 GOSUB1290
- 720 IF C=1 THEN C=2:GOSUB740:RETURN:PICK UP PIECE
- 730 IF C=2 THEN C=3:GOSUB860:RETURN:SET PIECE DOWN
- 740 IF CHAR<09 AND P0=P1 THEN C=1:RETURN
- 750 IF CHAR>30 AND P0=P2 THEN C=1:RETURN
- 760 AS=1024+40*ROW+CHAR:AC=55296+40*ROW+CHAR
- 770 SC=PEEK(AS):CC=(PEEK(AC)AND15)
- 780 BK=(SC AND 192):SC=(SC AND 63)
- 790 IF SC=32 OR CC<>P0 THEN C=1:RETURN
- 800 SP=-(SC=0)-2*(SC=9)-3*(SC=18)-4*(SC=27)-5*(SC=36)-6*(SC=45)-7*(SC=54)
- 810 POKE 2040,231+SP
- 820 IF OS<0 THEN POKE 53284,PEEK(53281-(BK=64)-2*(BK=128))AND15
- 830 SL=AS:CL=AC:SK=32+192:CR=PEEK(53284)AND15
- 840 GOSUB1370
- 850 RETURN
- 860 IF T%=2 THEN RETURN
- 870 IF CHAR<09 AND P0=P1 THEN C=2:RETURN
- 880 IF CHAR>30 AND P0=P2 THEN C=2:RETURN
- 890 IF(CHAR<09ANDP0=P2)OR(CHAR>30ANDP0=P1)THEN Q=1:C1=P0:GOSUB1080:GOTO980
- 900 BS= 1024+40*ROW+CHAR:BC=55296+40*ROW+CHAR
- 910 S1=PEEK(BS):C1=(PEEK(BC)AND15)
- 920 IF C1=P0 THENC=2:RETURN
- 930 IF(S1 AND 63)<>32 THEN GOSUB1080
- 940 SL=BS:CL=BC
- 950 SK=(SP-1)*9+(S1 AND 192):CR=P0
- 960 IF (S1 AND 192)=192 THEN T%=2:SK=(SP-1)*9+BK
- 970 GOSUB1370
- 980 POKE 53269,0:POKE 2040,239
- 990 IFT%=2 THEN T%=1:RETURN
- 1000 T=-(BK=64)-2*(BK=128)
- 1010 SL=AS:CL=AC:SK=32+BK:CR=(PEEK(53281+T)AND15)
- 1020 GOSUB1370
- 1030 IF Q=1 THEN Q=0:RETURN
- 1040 IF(ROW=21)AND(P0=P2)AND(SC=45) THEN GOSUB1180
- 1050 IF(ROW=0)AND(P0=P1)AND(SC=45) THEN GOSUB1180
- 1060 RETURN
- 1070 REM CAPTURE PIECE ROUTINE
- 1080 AA=0:IF C1=P1 THEN AA=30
- 1090 IF Q=1 THEN Q%=SC:GOTO1110
- 1100 Q%=(PEEK(BS)AND63)
- 1110 GOSUB1970
- 1120 SL=PS+AA+120*(I-1):SK=Q%:CL=PC+AA+120*(I-1)
- 1130 CR=P2:IF C1=P1 THEN CR=P1
- 1140 IF(PEEK(SL)AND192)=192 THEN T%=2
- 1150 GOSUB1370
- 1160 RETURN
- 1170 REM PAWN PROMOTION ROUTINE
- 1180 POKE 646,P0
- 1190 PRINT VT$;TAB(9)"PRESS 'Q','R','B' OR 'K' "
- 1200 POKE198,0:WAIT198,1:GETA$
- 1210 RP=-10*(A$="Q")-19*(A$="R")-28*(A$="K")-37*(A$="B")-55*(A$="N")
- 1220 IF RP=0 THEN1200
- 1230 SL=BS:CL=BC:SK=(RP-1)+(PEEK(BS)AND192):CR=P0
- 1240 GOSUB1370
- 1250 PRINT VT$;TAB(9)" "
- 1260 RETURN
- 1270 REM DETERMINE CHARACTER POSITION OF SPRITE AND ROUND TO UPPER
- 1280 REM LEFT CHARACTER OF NINE CHARACTER BLOCK
- 1290 ROW=INT((Y-49)/8):CHAR=INT((X-24)/8)
- 1300 FOR T=21 TO 0 STEP -3:IF ROW=>T THEN ROW=T:T=0:NEXTT:GOTO1320
- 1310 NEXT T:ROW=0
- 1320 FOR T=36 TO 03 STEP-3:IF CHAR=>T THEN CHAR=T:T=01:NEXTT:GOTO1340
- 1330 NEXT T:CHAR=03
- 1340 RETURN
- 1350 REM PRINT A NINE BLOCK CHARACTER EITHER A PLAYING PIECE
- 1360 REM OR BLANK FOR ERASING A PIECE
- 1370 FOR I=0 TO 2
- 1380 FOR J=0 TO 2
- 1390 POKE SL+I*40+J,SK+I*3+J
- 1400 POKE CL+I*40+J,CR
- 1410 NEXTJ,I
- 1420 RETURN
- 1430 SN$="":M$="SAVE ":POKE 646,P0:GOSUB1570
- 1440 IF SN$="" THEN1490
- 1450 GOSUB1660:IF E<>0 THEN GOSUB1770:GOTO1490
- 1460 FE=0
- 1470 GOSUB1700
- 1480 IF FE<>0 THEN GOSUB1690:GOTO1430
- 1490 PRINTVT$;TAB(3);" ";:RETURN
- 1500 REM NOTE: ALL COLORS MUST BE THE SAME FOR A LOAD
- 1510 REM AS THEY WERE FOR THE SAVE
- 1520 SN$="":M$="LOAD ":POKE 646,P0:GOSUB1570:
- 1530 IF SN$="" THEN1560
- 1540 GOSUB1660:IF E<>0 THEN1520
- 1550 GOSUB1850
- 1560 PRINTVT$;TAB(3);" ";:RETURN
- 1570 PRINT VT$;TAB(4)M$"FILE NAME:* ";
- 1580 POKE 198,0:WAIT 198,1:GET A$
- 1590 IF ASC(A$)=20 AND SN$<>"" THEN SN$=LEFT$(SN$,LEN(SN$)-1):GOTO1640
- 1600 IF ASC(A$)=13 THEN RETURN
- 1610 IF ASC(A$)<32 OR ASC(A$)>90 THEN1580
- 1620 IF LEN(SN$)>15 THEN1580
- 1630 SN$=SN$+A$
- 1640 PRINTVT$;TAB(4)M$"FILE NAME:";SN$;LEFT$("* ",16-LEN(SN$));
- 1650 GOTO1580
- 1660 GOSUB1930
- 1670 OPEN5,8,5,"0:"+SN$+",U,R":CLOSE5
- 1680 GOSUB1940
- 1690 CLOSE15:OPEN 15,8,15:INPUT#15,E,E$:RETURN
- 1700 PRINTVT$TAB(04)"FILE EXISTS REPLACE (Y OR N)";
- 1710 POKE198,0:WAIT198,1:GETA$
- 1720 IF A$<>"Y"ANDA$<>"N" THEN1710
- 1730 GOSUB1930
- 1740 IF A$="N" THEN FE=-1:GOTO1940
- 1750 PRINT#15,"S0:"+SN$
- 1760 GOTO1780
- 1770 GOSUB1930
- 1780 GOSUB1950
- 1790 OPEN5,8,5,"0:"+SN$+",U,W"
- 1800 SYS BA+667:REM 9883
- 1810 SYS BA+704:REM 9920
- 1820 CLOSE5
- 1830 GOSUB1960
- 1840 GOTO1940
- 1850 GOSUB1930
- 1860 GOSUB1950
- 1870 OPEN5,8,5,"0:"+SN$+",U,R"
- 1880 SYS BA+667:REM 9883
- 1890 SYS BA+753:REM 9969
- 1900 CLOSE5
- 1910 GOSUB1960
- 1920 GOTO1940
- 1930 POKE 53265,PEEK(53265)AND 239:RETURN:SCREEN OFF
- 1940 POKE 53265,(PEEK(53265)AND 239)+16:RETURN:SCREEN ON
- 1950 CLOSE15:OPEN15,8,15,"UI-":RETURN
- 1960 CLOSE15:OPEN15,8,15,"UI+":RETURN
- 1970 I=-1*(Q%=18)-2*(Q%=27)-3*(Q%=36)-4*(Q%=0)-5*(Q%=9)-7*(Q%=54)-8*(Q%=45)
- 1980 ON I GOTO2000,2020,2000,2020,2020,2020,2020,2040
- 1990 RETURN
- 2000 IF PEEK(PS+AA+120*(I-1))=Q% THEN I=-8*(Q%=18)-6*(Q%=36):GOTO2020
- 2010 RETURN
- 2020 IF PEEK(PS+AA+120*(I-1))=Q% THEN Q%=45:GOTO2040
- 2030 RETURN
- 2040 I=0:AA=AA+3
- 2050 IF PEEK(PS+AA+120*I)=Q% THEN I=I+1:GOTO2050
- 2060 I=I+1:RETURN
- 3000 PRINT"[147]CHESSBOARD 3.0
- 3002 [153]"";"THIS PROGRAM IS BEING RELEASED UNDER THE SHAREWARE CONCEPT.";
- 3005 [153]"IT DEMONSTRATES ALL THE GRAPHICS FEATURES OF THE 64";
- 3010 [153]" EXCEPT BIT MAP, MULTICOLOR BIT MAP, MULTICOLOR CHARACTERS AND ";
- 3015 [153]"MULTICOLOR SPRITES.
- 3020 PRINT"IF YOU LIKE IT AND KEEP IT PLEASE SEND $1.00 OR WHATEVER YOU THINK"
- 3026 PRINT"FEEL FREE TO COPY AND GIVE IT TO OTHERS, JUST LEAVE THIS MESSAGE ";
- 3027 PRINT"IN. THANX :-)"
- 3030 PRINT"ROBERT J. GONZALEZ
- 3035 [153]"1735 W. CORTEZ STREET #202
- 3040 PRINT"PHOENIX, AZ 85029-5935
- 3045 [153]"E-MAIL COMMENTS TO: ";
- 3050 [153]"GONZO@INDIRECT.COM
- 3060 TI$="000000"
- 3065 IF VAL(RIGHT$(TI$,2))<15 THEN 3065
- 3070 RETURN
-